/**
 *
 * 如果按照下面的书写， 会在全部变量中定义三个变量，需要进行优化
 */

function checkMail() {
}

function checkName() {
}

function checkNumber() {
}

/**
 * 一个对象中， 声明三个方法， 全局变量将只有一个
 * @type {{checkMail(), checkNumber(), checkName()}}
 */

const checkObject = {
    checkMail() {
    },
    checkNumber() {
    },
    checkName() {
    }
}

/**
 * 添加上链式调用处理， return this;
 * @type {{checkMail(): this, checkNumber(): this, checkName(): this}}
 */

const checkObjectV = {
    checkName() {
        // check code
        return this;
    },
    checkNumber() {
        return this;
    },
    checkMail() {
        return this;
    },
}

/**
 * 或者直接在方法上挂载方法
 */
const check = function () {
}
check.checkMail = function () {
}
check.checkNumber = function () {
}
check.checkName = function () {
}

/**
 * 最好的办法， 是在方法的原型上挂方法，但是， 不会影响全局
 */


Function.prototype.addMethod = function (name, fn){
    this[name] = fn;
//    可以进行链式调用的方法
    return this;
}

let add = function (){}
let sub = function (){}
add.addMethod('subMethod', sub)

